- NAME
-
fineprnt — fine printing on an hp+ or compatible laser printer
- SYNOPSIS
-
fineprnt options filenames
- DESCRIPTION
-
Fineprnt prints ascii or binary files in a column oriented manner on an
hp+ or compatible laser printer. It uses a small 6pt fixed or
proportionally spaced font downloaded before printing. The printout can be
tuned to any paper size, portrait or landscape mode. Double sided
printing is supported with page layout adjusted to odd (right hand side)
and even (left hand side) pages. It is typically used to print program
listings, readme files and the like in a very compressed form.
Fineprnt is a stand-alone program but supports an environment variable
and an optional configuration file.
- OPTIONS
-
Options and filenames
(which can contain wildcards)
can be given in any order, however, all options are
processed before printing starts, and all files are printed with the same
setting. Options must be separated by spaces.
In the following list, # stands for an integer
number, ? for a single character and * for a string of characters.
Defaults, given in parentheses, are adjusted for standard A4 paper in
portrait mode.
The values for some length parameters
are in dots, one dot being
inch, the resolution of
the hp+ printer.
Note that the area of print does not usually coincide with the physical
size of the paper. The margin parameters, therefore, do not necessarily
count from the borders of the sheet.
Before printing all files are scanned to determine the number of columns
and lines for each file and to search for lines that may have to be
truncated.
- -c#
- Number of characters per line (80). This parameter
controls the width of each column. When the proportional font
is selected the actual number of characters printed can be
more or less, depending on the total width being less or more
of that what the fixed spacing font would produce.
- -l#
- Number of lines per column (132). This parameter
controls the page length.
- -s#
- Number of columns per page (2).
- -o#
- Left margin in dots (175) on all pages in single sided
mode, or on odd sides in 2-sided mode.
- -e#
- Left margin in dots (0) on even sides in 2-sided mode.
If landscape mode and 2-sided printing is specified, this
parameter applies to the upper margin on even sides.
- -u#
- Upper margin in dots (0). If landscape mode and 2-sided
printing is specified, this parameter applies to the upper
margin on odd sides only.
- -b#
- Baselineskip in dots (24). A value less than 24 is not
recommended. A larger value might yield a slightly better
readability, but at the cost of less lines fiting on the page.
- -a#
- First page to print (1).
- -z#
- Last page to print (last page of this print job).
- -t#
- Set tab stops every # characters (8).
- -w#
- Wrap option for lines longer than the column width:
- 1
- Wrap lines.
- 0
- Truncate lines (the default).
- -1
- Continue printing beyond the column width.
- -f#
- Frame around each column:
- 0
- No frame.
- 1
- Vertical lines as separator between columns only.
- 2
- Horizontal lines above and below each column.
- 3
- A box around each column (the default).
- -h#
- Header and footer for each column:
- 0
- No header or footer.
- 1
- Print filename as header only.
- 2
- Print column number as footer only.
- 3
- Filename as header, column number as footer.
- 4
- As above, plus information on file modification
and the total number of columns for this file
(the default).
- -n#
- Option for line numbering. If a positive number is
specified lines are numbered consecutively, starting from 0
for each file, incremented by the given number. Note that
column 2 and higher are shifted a further 4 character spaces
each to the right to accommodate room for the line numbers. If
a negative number is given, only the innermost column of each
page is numbered, starting from 0 on each page and incremented
by the absolute value of the given number. Column alignment is
not changed in this case.
The default is 0, no line numbering.
- -#[e/o]
- Specify one/two-sided or no printing:
- -2
- 2-sided printing, odd sides first,
prompt to print even sides
- -2e
- 2-sided, even sides only (off)
- -2o
- 2-sided, odd sides only (off)
- -1e
- 1-sided, but margins as for even sides
- -1o
- 1-sided, margins as for odd sides,
same as -1 (default)
- -0
- don't actually print, find number of
columns for each file only.
- -B?[.]
- Dump bytes instead of ascii interpretation. The
character following the -B indicates:
X=HEX, x=hex, o=octal or b=binary representation.
Any other or no character defaults to ascii interpretation.
An optional period (.) changes any zeros in the print into
periods, which may improve readability in some circumstances.
- -P*
- direct output:
If a single digit is given after the -P it specifies the printer
port, the default is 1.
For any other string following -P the output is redirected (append
mode) into a file named by the given string.
- -F?
- Select font, f = fixed, p = proportional, default is f.
- -O?
- Page orientation, p = portrait, l = landscape (p).
- -N?
- To start a new file, advance
- l
- 5 lines
- h
- to next half column
- c
- to next column
- p
- to a new page
- s
- to a new sheet
- x
- variable: if the next file fits in the same
column (including 5 empty separation lines), it
is printed there. Otherwise, the current column
is ended, and if the new file entirely fits in
one column, it is printed in the next one. If it
exeeds one column, printing starts on a fresh
page. If it exeeds on page printing starts on a
new sheet (which is only different from a new
page if 2-sided printing is active and the last
file ended on an odd page).
- -D*
- Directory containing fineprnt.cfg (.).
- -E*
- Disregard any characters between a form-feed and the
next newline character: -Eon switches this feature on.
Any other string following -E means off (default is off).
- -Z*
- Recognise ctrl-Z as file terminator. -Zon
activates this feature, any other string after -Z means off
(default is off).
- USER-DEFINED OPTIONS
-
When an option is not found under those listed above, a file fineprnt.cfg
is searched (see under FILES) and scanned for a line whose
first word (a string followed by one or more blank spaces) matches that
option (stripped of the introducing character - or /). If a match is
found, the rest of that line is parsed for options, just like command
line options or the value of the environmental variable, with the only
difference that nesting is not possible. Note that the name of a
user-defined option cannot start with one of the 8 upper case letters
B, D, E, F, N, O, P or Z. It can start with any lower case letter, but if
it is one of a, b, c, e, f, h, l, n, o, s, t, u, w, or z, the second
character must not be a digit, - or +.
This feature is thought to provide a convenient way to abbreviate a set
of options to customise the program to individual taste or printer
set-ups. An example: If fineprnt.cfg exists and contains the following
line
quer -Ol -l88 -u27 -s3 -2 -o85
typing
fineprnt -quer myfile
will print myfile in landscape mode, with 88 lines per column, 3 columns
per page, etc.
- ENVIRONMENT
-
FINEPRNT — a list of options processed before (and overridden by)
command line options. The environment variable is optional.
- FILES
-
finepnrt.cfg — an optional ascii file containing sets of
user-defined options. If the -D option is not specified, the file is
first searched in the current directory and than in the directory
containing fineprnt.exe. The file need not exist.
- FYI
-
In ascii mode formfeed characters act as a vertical tab of half a column
distance: If the current column is less than half filled, printing
continues at line
+ 1, where l is the number of lines per
column. If the current column is more than half filled, printing continues
in the next column.
Backspace characters are sometimes used to simulate bold printing on
dot-matrix printers. This has no effect, however, on a laser printer. To
follow the dot-matrix printer convention char–̱char sequences are
rendered by shifting the second printed character one dot to the right
and upwards which gives the appearance of a bolder stroke width.
The characters of the fixed spacing font have a width of 13 dots.
The total print width (in inch) is (for fixed as well as proportional
mode)
(s(c + 3) - 1) |
for n≤0 |
(s(c + 7) - 1) |
for n > 0 |
where c is the number of characters per column, s is the number
of columns per page and n the value of the -n parameter. If -w-1 is
specified this width may be exeeded by long lines.
The maximum length of one column is
(counted from the upper end of the area of print)
inch,
where u is the topmargin, l the number of lines per column, and b
the baselineskip.
- RESTRICTIONS
-
Only standard printable ascii characters can be handled. Unfortunately
IBM and HP implemented different sets of extended
characters, requiring a remapping. Extended characters are on the list of
things to do. I might tackle this after my return to Europe.
- LIMITATIONS
-
The maximum number of charaters per line is 511. The maximum length of a
command line is 128 characters. The number of files to be printed is only
limited by the amount of memory available to store their names.
The total number of characters on a normal A4 page can be 20,000
or more. A page with little white space (as it may occur when using the
-B option) can exhaust the printer's memory, which results in a page
too complex error on the printer. Apart from adding memory to the
printer, the only remedy is to reduce the number of total characters per
page using the -c, -l, or -s options.
- CAVEATS
-
The program has only been tested on 8086, 80286 and
80386 processors, under DOS 3.2 and 3.3 and
with the following printers: hp3, Epson GQ-3500 and Dataproducts
LZR-1230, the latter two emulating an hp+. It should run under
any DOS 2.0 or higher.
- SHAREWARE
-
If you use fineprnt beyond an evaluation period, send $20 to the
Trees-For-Life people, Greenpeace or any other environment protection
organisation of your choice. If you don't use this program to print your
ascii files, send 1 cent for each page you print to Trees-For-Life anyway.
Fineprnt is free if used to print on recycled paper. If you don't comply
with this rules, you must plant one tree for each 50 pages you print.
- AUTHOR
-
Jörg Hartmann
FIAMS, Flinders University of South Australia, Bedford Park SA 5042. |
e-mail: mojh@research.cc.flinders.edu.au |
I will be leaving Australia in early March 1991, and from April 1991 I
will be at
Alfred Wegener Institut für Polar- und Meeresforschung |
Columbusstraße, 2850 Bremerhaven, Germany. |
e-mail: postmaster@vax.awi-bremerhaven.dbp.de |